package model;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

public class Patient {

	private static int patientenIdCounter = 0;

	private int patientenId;

	private String vorname;

	private String nachname;

	private Date geburtsdatum;

	private String strasse;

	private String hausnummer;

	private String postleitzahl;

	private String ort;

	private String telefonnummer;

	private boolean privatVersichert;

	private String krankenkasse;

	private String versicherungsnummer;

	private String ueberweisungsgrund;

	private ArrayList<Protokoll> protokolle;

	public Patient(String vorname, String nachname, Date geburtsdatum,
			String strasse, String hausnummer, String postleitzahl, String ort,
			String telefonnummer, boolean privatVersichert, String krankenkasse, String versicherungsnummer, String ueberweisungsgrund) {
		patientenId = patientenIdCounter++;
		this.vorname = vorname;
		this.nachname = nachname;
		this.geburtsdatum = (geburtsdatum == null) ? null : new Date(geburtsdatum.getTime());
		this.strasse = strasse;
		this.hausnummer = hausnummer;
		this.postleitzahl = postleitzahl;
		this.ort = ort;
		this.telefonnummer = telefonnummer;
		this.privatVersichert = privatVersichert;
		this.krankenkasse = krankenkasse;
		this.versicherungsnummer = versicherungsnummer;
		this.ueberweisungsgrund = ueberweisungsgrund;
		protokolle = new ArrayList<Protokoll>();
	}

	public int getPatientenId() {
		return patientenId;
	}

	public String getVorname() {
		return vorname;
	}

	public void setVorname(String vorname) {
		this.vorname = vorname;
	}

	public String getNachname() {
		return nachname;
	}

	public void setNachname(String nachname) {
		this.nachname = nachname;
	}

	public Date getGeburtsdatum() {
		return (geburtsdatum == null) ? null : new Date(geburtsdatum.getTime());
	}

	public void setGeburtsdatum(Date geburtsdatum) {
		this.geburtsdatum = (geburtsdatum == null) ? null : new Date(geburtsdatum.getTime());
	}

	public String getStrasse() {
		return strasse;
	}

	public void setStrasse(String strasse) {
		this.strasse = strasse;
	}

	public String getHausnummer() {
		return hausnummer;
	}

	public void setHausnummer(String hausnummer) {
		this.hausnummer = hausnummer;
	}

	public String getPostleitzahl() {
		return postleitzahl;
	}

	public void setPostleitzahl(String postleitzahl) {
		this.postleitzahl = postleitzahl;
	}

	public String getOrt() {
		return ort;
	}

	public void setOrt(String ort) {
		this.ort = ort;
	}

	public String getTelefonnummer() {
		return telefonnummer;
	}

	public void setTelefonnummer(String telefonnummer) {
		this.telefonnummer = telefonnummer;
	}

	public boolean isPrivatVersichert() {
		return privatVersichert;
	}

	public void setPrivatVersichert(boolean privatVersichert) {
		this.privatVersichert = privatVersichert;
	}

	public String getKrankenkasse() {
		return krankenkasse;
	}

	public void setKrankenkasse(String krankenkasse) {
		this.krankenkasse = krankenkasse;
	}

	public String getVersicherungsnummer() {
		return versicherungsnummer;
	}

	public void setVersicherungsnummer(String versicherungsnummer) {
		this.versicherungsnummer = versicherungsnummer;
	}

	public String getUeberweisungsgrund() {
		return ueberweisungsgrund;
	}

	public void setUeberweisungsgrund(String ueberweisungsgrund) {
		this.ueberweisungsgrund = ueberweisungsgrund;
	}

	public List<Protokoll> getProtokolle() {
		return Collections.unmodifiableList(protokolle);
	}

	public void addProtokoll(Protokoll protokoll) {
		protokolle.add(protokoll);
	}

	public void removeProtokoll(Protokoll protokoll) {
		protokolle.remove(protokoll);
	}

	@Override
	public String toString() {
		return patientenId + ": " + vorname + " " + nachname;
	}

}
